/**
 * 运行时异常错误处理，兜底所有异常
 * @param {*} app koa 实例
 * @returns 
 */
module.exports = (app) => {
    return async (ctx, next) => { 
        try {
            await next();
        } catch (error) {
            // 错误处理
            const { message, status, detail } = error;

            app.logger.info(JSON.stringify(error));
            app.logger.error('[-- exception --]', error);
            app.logger.error('[-- exception --]', status, message, detail);

            if (message && message.indexOf('template not found') > -1) {
                // 页面重定向
                ctx.status = 302; // 临时重定向
                ctx.redirect(`${app.options?.homePage}`);
            }

            const resbody = {
                success: false,
                code: 50000,
                message: '网络异常，请稍后重试',
            };

            ctx.status = 200;
            ctx.body = resbody;
        }
    };
};